package it.fantacalcio.struts.action.amministrazione.giocatore;

import java.io.BufferedReader;
import java.io.File;
//import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
//import java.io.InputStream;
//import java.util.Iterator;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

import it.fantacalcio.model.Giocatore;
import it.fantacalcio.spring.service.MyServiceFactory;
import it.fantacalcio.struts.form.FileQuotazioniForm;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

//import org.apache.poi.hssf.usermodel.HSSFCell;
//import org.apache.poi.hssf.usermodel.HSSFRow;
//import org.apache.poi.hssf.usermodel.HSSFSheet;
//import org.apache.poi.hssf.usermodel.HSSFWorkbook;
//import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;

public class LeggiQuotazioniAction extends Action {
	
	
	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		
		FileQuotazioniForm fileQuotazioniForm = (FileQuotazioniForm) form;
		
		List<Giocatore> listaGiocatore = new ArrayList<Giocatore>();
		
		FormFile quotazione = fileQuotazioniForm.getFileQuotazioni();
		byte[] arrayByte = quotazione.getFileData();
		 
//		File fileToCreate = new File("D:/solving/progettiEclipse/Fantacalcio/WebContent/csv", quotazione.getFileName());
		File fileToCreate = new File("C:/Users/Alessio/workspace/Fantacalcio/WebContent/csv", quotazione.getFileName());
		   
		if(!fileToCreate.exists()){
			FileOutputStream fileOutStream = new FileOutputStream(fileToCreate);
		    fileOutStream.write(arrayByte);
		    fileOutStream.flush();
		    fileOutStream.close();
		}
		
		try {
			FileReader fr = new FileReader(fileToCreate);
			BufferedReader br = new BufferedReader(fr);
			String line;
			int i = 1;
			MyServiceFactory.getGiocatoreService().deleteAll();
			while ((line=br.readLine()) != null) {
				if(i > 3){
					StringTokenizer st = new StringTokenizer(line,";");
					
					@SuppressWarnings("unused")
					String id = st.nextToken();
					char ruolo = st.nextToken().charAt(0);
					String cognome = st.nextToken();
					String squadraReale = st.nextToken();
					int valore = Integer.parseInt(st.nextToken());
					@SuppressWarnings("unused")
					String costoInizionale = st.nextToken();
					@SuppressWarnings("unused")
					String diff = st.nextToken();
					
					Giocatore giocatore = new Giocatore();
					giocatore.setCognome(cognome);
					giocatore.setSquadraReale(squadraReale);
					giocatore.setValore(valore);
					switch (ruolo) {
						case 'A':giocatore.setRuolo("ATT");break;
						case 'C':giocatore.setRuolo("CEN");break;
						case 'D':giocatore.setRuolo("DIF");break;
						case 'P':giocatore.setRuolo("POR");break;
					}
					MyServiceFactory.getGiocatoreService().salva(giocatore);
				}
				i++;
			}
			br.close();	
			
			listaGiocatore = MyServiceFactory.getGiocatoreService().list();
			
		}catch (FileNotFoundException e) {
			e.printStackTrace();
			return mapping.findForward("error");
		}catch (IOException e) {
			e.printStackTrace();
			return mapping.findForward("error");
		}catch (Exception e) {
			e.printStackTrace();
			return mapping.findForward("error");
		}finally{
			fileToCreate.delete();
		}
		
		request.setAttribute("listaGiocatore", listaGiocatore);
		request.setAttribute("msg", "Giocatori caricati");
		return mapping.findForward("ok");
	}

}
